package com.yxw.live_vod_boot.service;

import com.yxw.live_vod_boot.dto.*;
import com.yxw.live_vod_boot.vo.OrderVO;
import com.yxw.live_vod_boot.vo.ShopOrderListVO;
import com.yxw.yxnet_cd_center.common.dto.PageVO;

import java.util.List;


/**
 * @author Administrator
 */
public interface OrderService {

    /**
     * 查询某一店铺下的订单列表
     * @param dto
     * @return
     */
    PageVO<ShopOrderListVO> getOrderListByShopId(ShopOrderListQueryDTO dto);

    /**
     * 根据商品id查询订单列表
     * @param productId
     * @return
     */
    List<OrderVO> getOrderByProduct(Long productId);

    /**
     * 获取直播下单的订单列表
     * @param liveId
     * @return
     */
    List<OrderVO> getOrderByLive(Long liveId);

    /**
     * 后台获取订单列表
     * @param queryDTO
     * @return
     */
    PageVO<OrderVO> getOrderList(OrderQueryDTO queryDTO);

    /**
     * 后台获取订单详情
     * @param orderId
     * @return
     */
    OrderVO getOrderById(Long orderId);

    /**
     * 获取用户侧订单列表
     * @param queryDTO
     * @return
     */
    PageVO<OrderVO> getOrderListByUserId(UserOrderQueryDTO queryDTO);

    /**
     * 核销订单券码
     * @param dto
     */
    void verifyOrderCouponNum(VerifyOrderCouponNumDTO dto);

    /**
     * 添加订单 点击下单时调用
     * @param addDTO
     */
    void addOrder(OrderAddDTO addDTO);

    /**
     * 订单30分钟过期倒计时
     * @param order
     */
    void checkOrderExpiration(OrderVO order);

    /**
     * 删除订单 业务结束后调用
     * @param orderId
     */
    void deleteOrder(Long orderId);

    /**
     * 订单申请退款 支付完成后点击申请退款
     * @param refundDTO
     */
    void orderRefund(OrderRefundDTO refundDTO);

    /**
     * 取消订单  未支付前点击取消订单
     * @param orderId
     */
    void cancelOrder(Long orderId);

    /**
     * 订单-使用  支付完成后直接调用
     * @param orderId
     */
    void orderUse(Long orderId);
}
